package com.manage;

import java.util.ArrayList;
import java.util.List;
import java.util.Random;

/**
 * 班级类 - 用于管理班级信息、学生和小组
 */
public class ClassRoom {
    /** 班级唯一标识符 */
    private int id;
    /** 班级名称 */
    private String name;
    /** 班级包含的小组列表 */
    private List<Group> groups;
    /** 班级所有学生列表 */
    private List<Student> students;

    /**
     * 创建新班级
     * @param id 班级ID
     * @param name 班级名称
     */
    public ClassRoom(int id, String name) {
        this.id = id;
        this.name = name;
        this.groups = new ArrayList<>();
        this.students = new ArrayList<>();
    }

    /**
     * 向班级添加学生
     * @param student 要添加的学生对象
     */
    public void addStudent(Student student) {
        students.add(student);
    }

    /**
     * 从班级移除学生
     * @param student 要移除的学生对象
     */
    public void removeStudent(Student student) {
        students.remove(student);
    }

    /**
     * 向班级添加小组
     * @param group 要添加的小组对象
     */
    public void addGroup(Group group) {
        groups.add(group);
    }

    /**
     * 从班级移除小组
     * @param group 要移除的小组对象
     */
    public void removeGroup(Group group) {
        groups.remove(group);
    }

    /**
     * 随机抽取班级中的一名学生
     * @return 随机选中的学生，如果班级没有学生则返回null
     */
    public Student getRandomStudent() {
        if (students.isEmpty()) return null;
        Random random = new Random();
        return students.get(random.nextInt(students.size()));
    }

    /**
     * 随机抽取班级中的一个小组
     * @return 随机选中的小组，如果班级没有小组则返回null
     */
    public Group getRandomGroup() {
        if (groups.isEmpty()) return null;
        Random random = new Random();
        return groups.get(random.nextInt(groups.size()));
    }

    /**
     * 获取班级ID
     * @return 班级ID
     */
    public int getId() {
        return id;
    }

    /**
     * 设置班级ID
     * @param id 新的班级ID
     */
    public void setId(int id) {
        this.id = id;
    }

    /**
     * 获取班级名称
     * @return 班级名称
     */
    public String getName() {
        return name;
    }

    /**
     * 设置班级名称
     * @param name 新的班级名称
     */
    public void setName(String name) {
        this.name = name;
    }

    /**
     * 获取班级所有小组
     * @return 小组列表
     */
    public List<Group> getGroups() {
        return groups;
    }

    /**
     * 获取班级所有学生
     * @return 学生列表
     */
    public List<Student> getStudents() {
        return students;
    }

    /**
     * 重写toString方法，用于在JComboBox和JList中显示班级名称
     * @return 班级名称
     */
    @Override
    public String toString() {
        return name;
    }
} 